unit UPaisesModelo;

interface

uses
  UPaises;

const
  TABLENAME = 'paises';

type
  TPaisesModelo = class
    private
      function Insert(ObjPaises: TPaises): Boolean;
      function Delete(ObjPaises: TPaises): Boolean;
      function GetMaxId: Integer;
    protected
    public
  end;

implementation

uses UDMMVC, Dialogs, SysUtils;

{ TPaisesModelo }

function TPaisesModelo.Delete(ObjPaises: TPaises): Boolean;
begin
  try
    try
      DModuleMVC.ADOQueryMVC.Close;
      DModuleMVC.ADOQueryMVC.SQL.Clear;
      DModuleMVC.ADOQueryMVC.SQL.Text := 'DELETE FROM ' + TABLENAME + 'WHERE pais_id = :CODIGO';
      DModuleMVC.ADOQueryMVC.Parameters.ParamByName('CODIGO').Value := ObjPaises.GetCodigo;
      DModuleMVC.ADOQueryMVC.ExecSQL;
      Result := True;
    except
      on Erro: Exception do
      begin
        ShowMessage('Classe: '+ Erro.ClassName + chr(13) + 'Mensagem: '+ Erro.Message);
        Result := False;
      end;
    end;
  finally
    ObjPaises.Free;
  end;
end;

function TPaisesModelo.GetMaxId: Integer;
begin
 DModuleMVC.ADOQueryMVC.Close;
 DModuleMVC.ADOQueryMVC.SQL.Clear;
 DModuleMVC.ADOQueryMVC.SQL.Text := 'SELECT MAX(pais_id) AS CODIGO FROM '+ TABLENAME;
 DModuleMVC.ADOQueryMVC.Open;
 DModuleMVC.ADOQueryMVC.First;
end;

function TPaisesModelo.Insert(ObjPaises: TPaises): Boolean;
begin
  try
    try
      Result := True;
      DModuleMVC.ADOQueryMVC.Close;
      DModuleMVC.ADOQueryMVC.SQL.Clear;
      DModuleMVC.ADOQueryMVC.SQL.Text := 'INSERT INTO ' + TABLENAME + '(pais_nome, pais_sigla, pais_bandeira)' +
                                         ' VALUES (:PAIS_NOME, :PAIS_SIGLA, :PAIS_BANDEIRA)';
      DModuleMVC.ADOQueryMVC.Parameters.ParamByName('PAIS_NOME').Value := ObjPaises.GetNome;
      DModuleMVC.ADOQueryMVC.Parameters.ParamByName('PAIS_SIGLA').Value := ObjPaises.GetSigla;
      DModuleMVC.ADOQueryMVC.Parameters.ParamByName('PAIS_BANDEIRA').Value := ObjPaises.GetBandeira;
      DModuleMVC.ADOQueryMVC.ExecSQL;
    except
      on Erro: Exception do
      begin
        ShowMessage('Classe: '+ Erro.ClassName + chr(13) + 'Mensagem: '+ Erro.Message);
        Result := False;
      end;
    end;
  finally
  ObjPaises.Free;
  end;
end;

end.
 